fstats_data_columns Module



Variables

Type Visibility Attributes Name Initial
integer(kind=int32), public, parameter :: FS_COLUMN_INTEGER = 1

Denotes a column of integer values.

integer(kind=int32), public, parameter :: FS_COLUMN_LOGICAL = 3

Denotes a column of logical values.

integer(kind=int32), public, parameter :: FS_COLUMN_REAL = 2

Denotes a column of real (floating-point) values.

integer(kind=int32), public, parameter :: FS_COLUMN_STRING = 4

Denotes a column of text strings.


Interfaces

public interface abs

  • private pure function rc_abs(x) result(rst)

    Overloads abs to compute the absolute value of each column element.

    Arguments

    Type IntentOptional Attributes Name
    class(real_column), intent(in) :: x

    The input real_column; unallocated storage is treated as empty.

    Return Value type(real_column)

    An independent, unnamed column with the same count as x.

public interface acos

  • private pure function rc_acos(x) result(rst)

    Overloads acos to compute the inverse cosine of each column element. Values outside [-1, 1] follow intrinsic domain-error behavior.

    Arguments

    Type IntentOptional Attributes Name
    class(real_column), intent(in) :: x

    The input real_column; unallocated storage is treated as empty.

    Return Value type(real_column)

    An independent, unnamed column of angles in radians, with x's count.

public interface asin

  • private pure function rc_asin(x) result(rst)

    Overloads asin to compute the inverse sine of each column element. Values outside [-1, 1] follow intrinsic domain-error behavior.

    Arguments

    Type IntentOptional Attributes Name
    class(real_column), intent(in) :: x

    The input real_column; unallocated storage is treated as empty.

    Return Value type(real_column)

    An independent, unnamed column of angles in radians, with x's count.

public interface atan

  • private pure function rc_atan(x) result(rst)

    Overloads the one-argument atan to compute each element's inverse tangent.

    Arguments

    Type IntentOptional Attributes Name
    class(real_column), intent(in) :: x

    The input real_column; unallocated storage is treated as empty.

    Return Value type(real_column)

    An independent, unnamed column of angles in radians, with x's count.

public interface cos

  • private pure function rc_cos(x) result(rst)

    Overloads cos to compute the cosine of each column element.

    Arguments

    Type IntentOptional Attributes Name
    class(real_column), intent(in) :: x

    The input angles in radians; unallocated storage is treated as empty.

    Return Value type(real_column)

    An independent, unnamed column of cosine values with the same count as x.

public interface exp

  • private pure function rc_exp(x) result(rst)

    Overloads exp to compute the natural exponential of each column element. Overflow and underflow follow intrinsic exp behavior.

    Arguments

    Type IntentOptional Attributes Name
    class(real_column), intent(in) :: x

    The input real_column; unallocated storage is treated as empty.

    Return Value type(real_column)

    An independent, unnamed column of exponential values, with x's count.

public interface ieee_is_finite

  • private pure function rc_ieee_is_finite(x) result(rst)

    Overloads ieee_is_finite to test whether every column value is finite. An allocated empty column returns true; unallocated storage returns false.

    Arguments

    Type IntentOptional Attributes Name
    class(real_column), intent(in) :: x

    The real_column object.

    Return Value logical

    True if every value in the column is finite; else, false.

public interface ieee_is_nan

  • private pure function rc_ieee_is_nan(x) result(rst)

    Overloads ieee_is_nan to test whether every column value is NaN. This is an all-elements query, not a test for the presence of any NaN.

    Arguments

    Type IntentOptional Attributes Name
    class(real_column), intent(in) :: x

    The real_column to inspect, without copying its array.

    Return Value logical

    True if all values are NaN, including an allocated empty array; false for unallocated storage.

public interface ieee_is_negative

  • private pure function rc_ieee_is_negative(x) result(rst)

    Overloads ieee_is_negative to test the sign of every column value. Uses IEEE sign classification, including negative zero, rather than x < 0.

    Arguments

    Type IntentOptional Attributes Name
    class(real_column), intent(in) :: x

    The real_column to inspect, without copying its array.

    Return Value logical

    True if all values satisfy intrinsic ieee_is_negative, including an allocated empty array; false for unallocated storage.

public interface ieee_is_normal

  • private pure function rc_ieee_is_normal(x) result(rst)

    Overloads ieee_is_normal to classify every column value. Zero, subnormal, infinite, and NaN values follow intrinsic classification.

    Arguments

    Type IntentOptional Attributes Name
    class(real_column), intent(in) :: x

    The real_column to inspect, without copying its array.

    Return Value logical

    True if all values satisfy intrinsic ieee_is_normal, including an allocated empty array; false for unallocated storage.

public interface integer_column

  • private pure function ic_init_empty(n) result(rst)

    Constructs an empty integer_column of the requested size.

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=int32), intent(in) :: n

    The number of rows to create.

    Return Value type(integer_column)

    The newly constructed integer_column object.

  • private pure function ic_init_array(x) result(rst)

    Constructs a new integer_column by copying the contents of the supplied array.

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=int32), intent(in), dimension(:) :: x

    The array to copy.

    Return Value type(integer_column)

    The newly constructed integer_column object.

public interface log

  • private pure function rc_log(x) result(rst)

    Overloads log to compute the natural logarithm of each column element. Nonpositive values follow intrinsic domain-error behavior.

    Arguments

    Type IntentOptional Attributes Name
    class(real_column), intent(in) :: x

    The input real_column; unallocated storage is treated as empty.

    Return Value type(real_column)

    An independent, unnamed column of logarithms with the same count as x.

public interface log10

  • private pure function rc_log10(x) result(rst)

    Overloads log10 to compute the base-10 logarithm of each column element. Nonpositive values follow intrinsic domain-error behavior.

    Arguments

    Type IntentOptional Attributes Name
    class(real_column), intent(in) :: x

    The input real_column; unallocated storage is treated as empty.

    Return Value type(real_column)

    An independent, unnamed column of logarithms with the same count as x.

public interface logical_column

  • private pure function lc_init_empty(n) result(rst)

    Constructs an empty logical_column of the requested size.

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=int32), intent(in) :: n

    The number of rows to create.

    Return Value type(logical_column)

    The newly constructed logical_column object.

  • private pure function lc_init_array(x) result(rst)

    Constructs a new logical_column by copying the contents of the supplied array.

    Arguments

    Type IntentOptional Attributes Name
    logical, intent(in), dimension(:) :: x

    The array to copy.

    Return Value type(logical_column)

    The newly constructed logical_column object.

public interface maxval

  • private pure function rc_maxval(x) result(rst)

    Overloads maxval to find the largest column value without copying the array. Nonfinite values follow intrinsic maxval behavior.

    Arguments

    Type IntentOptional Attributes Name
    class(real_column), intent(in) :: x

    The input real_column; unallocated storage is treated as empty.

    Return Value real(kind=real64)

    The maximum, or -huge(0.0d0) for an empty column.

public interface minval

  • private pure function rc_minval(x) result(rst)

    Overloads minval to find the smallest column value without copying the array. Nonfinite values follow intrinsic minval behavior.

    Arguments

    Type IntentOptional Attributes Name
    class(real_column), intent(in) :: x

    The input real_column; unallocated storage is treated as empty.

    Return Value real(kind=real64)

    The minimum, or huge(0.0d0) for an empty column.

public interface operator(*)

  • private pure function rc_multiply(x, y) result(rst)

    Overloads * to multiply corresponding elements, not compute a dot product. Unequal counts cause ERROR STOP with FS_ARRAY_SIZE_ERROR.

    Arguments

    Type IntentOptional Attributes Name
    class(real_column), intent(in) :: x

    The left and right operands; unallocated storage is treated as empty.

    class(real_column), intent(in) :: y

    The left and right operands; unallocated storage is treated as empty.

    Return Value type(real_column)

    An independent, unnamed column of x * y, with the operands' count.

  • private pure function rc_multiply_scalar(x, y) result(rst)

    Overloads * to multiply each column value by a scalar.

    Arguments

    Type IntentOptional Attributes Name
    class(real_column), intent(in) :: x

    The left operand real_column; unallocated storage is empty.

    real(kind=real64), intent(in) :: y

    The scalar right operand, broadcast to every row.

    Return Value type(real_column)

    An independent, unnamed column of x * y, with x's count.

  • private pure function scalar_multiply_rc(x, y) result(rst)

    Overloads * to multiply a scalar by each column value.

    Arguments

    Type IntentOptional Attributes Name
    real(kind=real64), intent(in) :: x

    The scalar left operand, broadcast to every row.

    class(real_column), intent(in) :: y

    The right operand real_column; unallocated storage is empty.

    Return Value type(real_column)

    An independent, unnamed column of x * y, with y's count.

public interface operator(+)

  • private pure function rc_add(x, y) result(rst)

    Overloads + to add corresponding elements of two columns. Unequal counts cause ERROR STOP with FS_ARRAY_SIZE_ERROR.

    Arguments

    Type IntentOptional Attributes Name
    class(real_column), intent(in) :: x

    The left and right operands; unallocated storage is treated as empty.

    class(real_column), intent(in) :: y

    The left and right operands; unallocated storage is treated as empty.

    Return Value type(real_column)

    An independent, unnamed column of x + y, with the operands' count.

  • private pure function rc_add_scalar(x, y) result(rst)

    Overloads + to add a scalar to each column value.

    Arguments

    Type IntentOptional Attributes Name
    class(real_column), intent(in) :: x

    The left operand real_column; unallocated storage is empty.

    real(kind=real64), intent(in) :: y

    The scalar right operand, broadcast to every row.

    Return Value type(real_column)

    An independent, unnamed column of x + y, with x's count.

  • private pure function scalar_add_rc(x, y) result(rst)

    Overloads + to add each column value to a scalar.

    Arguments

    Type IntentOptional Attributes Name
    real(kind=real64), intent(in) :: x

    The scalar left operand, broadcast to every row.

    class(real_column), intent(in) :: y

    The right operand real_column; unallocated storage is empty.

    Return Value type(real_column)

    An independent, unnamed column of x + y, with y's count.

  • private pure function rc_positive(x) result(rst)

    Overloads unary + to create a copy of the column's values.

    Arguments

    Type IntentOptional Attributes Name
    class(real_column), intent(in) :: x

    The operand real_column; unallocated storage is treated as empty.

    Return Value type(real_column)

    An independent, unnamed column with the same values and count as x.

public interface operator(-)

  • private pure function rc_subtract(x, y) result(rst)

    Overloads - to subtract corresponding elements of two columns. Unequal counts cause ERROR STOP with FS_ARRAY_SIZE_ERROR.

    Arguments

    Type IntentOptional Attributes Name
    class(real_column), intent(in) :: x

    The left and right operands; unallocated storage is treated as empty.

    class(real_column), intent(in) :: y

    The left and right operands; unallocated storage is treated as empty.

    Return Value type(real_column)

    An independent, unnamed column of x - y, with the operands' count.

  • private pure function rc_subtract_scalar(x, y) result(rst)

    Overloads - to subtract a scalar from each column value.

    Arguments

    Type IntentOptional Attributes Name
    class(real_column), intent(in) :: x

    The left operand real_column; unallocated storage is empty.

    real(kind=real64), intent(in) :: y

    The scalar right operand, broadcast to every row.

    Return Value type(real_column)

    An independent, unnamed column of x - y, with x's count.

  • private pure function scalar_subtract_rc(x, y) result(rst)

    Overloads - to subtract each column value from a scalar.

    Arguments

    Type IntentOptional Attributes Name
    real(kind=real64), intent(in) :: x

    The scalar left operand, broadcast to every row.

    class(real_column), intent(in) :: y

    The right operand real_column; unallocated storage is empty.

    Return Value type(real_column)

    An independent, unnamed column of x - y, with y's count.

  • private pure function rc_negative(x) result(rst)

    Overloads unary - to negate each column value.

    Arguments

    Type IntentOptional Attributes Name
    class(real_column), intent(in) :: x

    The operand real_column; unallocated storage is treated as empty.

    Return Value type(real_column)

    An independent, unnamed column with negated values and x's count.

public interface operator(/)

  • private pure function rc_divide(x, y) result(rst)

    Overloads / to divide corresponding elements of two columns. Unequal counts cause ERROR STOP with FS_ARRAY_SIZE_ERROR. Zero divisors and nonfinite values follow intrinsic division behavior.

    Arguments

    Type IntentOptional Attributes Name
    class(real_column), intent(in) :: x

    The numerator and denominator columns; unallocated storage is empty.

    class(real_column), intent(in) :: y

    The numerator and denominator columns; unallocated storage is empty.

    Return Value type(real_column)

    An independent, unnamed column of x / y, with the operands' count.

  • private pure function rc_divide_scalar(x, y) result(rst)

    Overloads / to divide each column value by a scalar. Zero divisors and nonfinite values follow intrinsic division behavior.

    Arguments

    Type IntentOptional Attributes Name
    class(real_column), intent(in) :: x

    The numerator real_column; unallocated storage is empty.

    real(kind=real64), intent(in) :: y

    The scalar denominator, broadcast to every row.

    Return Value type(real_column)

    An independent, unnamed column of x / y, with x's count.

  • private pure function scalar_divide_rc(x, y) result(rst)

    Overloads / to divide a scalar by each column value. Zero divisors and nonfinite values follow intrinsic division behavior.

    Arguments

    Type IntentOptional Attributes Name
    real(kind=real64), intent(in) :: x

    The scalar numerator, broadcast to every row.

    class(real_column), intent(in) :: y

    The denominator real_column; unallocated storage is empty.

    Return Value type(real_column)

    An independent, unnamed column of x / y, with y's count.

public interface product

  • private pure function rc_product(x) result(rst)

    Overloads product to multiply all column values, without copying the array.

    Arguments

    Type IntentOptional Attributes Name
    class(real_column), intent(in) :: x

    The input real_column; unallocated storage is treated as empty.

    Return Value real(kind=real64)

    The product, or one for an empty column. Uses intrinsic product semantics.

public interface real_column

  • private pure function rc_init_empty(n) result(rst)

    Constructs an empty real_column of the requested size.

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=int32), intent(in) :: n

    The number of rows to create.

    Return Value type(real_column)

    The newly constructed real_column object.

  • private pure function rc_init_array(x) result(rst)

    Constructs a new real_column by copying the contents of the supplied array.

    Arguments

    Type IntentOptional Attributes Name
    real(kind=real64), intent(in), dimension(:) :: x

    The array to copy.

    Return Value type(real_column)

    The newly constructed real_column object.

public interface sin

  • private pure function rc_sin(x) result(rst)

    Overloads sin to compute the sine of each column element.

    Arguments

    Type IntentOptional Attributes Name
    class(real_column), intent(in) :: x

    The input angles in radians; unallocated storage is treated as empty.

    Return Value type(real_column)

    An independent, unnamed column of sine values with the same count as x.

public interface size

  • private pure function dc_size(col) result(rst)

    Returns the number of items in the column.

    Arguments

    Type IntentOptional Attributes Name
    class(data_column), intent(in) :: col

    The data_column object.

    Return Value integer

    The size of the column.

public interface sqrt

  • private pure function rc_sqrt(x) result(rst)

    Overloads sqrt to compute the square root of each column element. Negative values follow intrinsic domain-error behavior.

    Arguments

    Type IntentOptional Attributes Name
    class(real_column), intent(in) :: x

    The input real_column; unallocated storage is treated as empty.

    Return Value type(real_column)

    An independent, unnamed column of square roots with x's count.

public interface string_column

  • private pure function sc_init_empty(n) result(rst)

    Constructs an empty integer_column of the requested size.

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=int32), intent(in) :: n

    The number of rows to create.

    Return Value type(string_column)

    The newly constructed string_column object.

  • private pure function sc_init_array(x) result(rst)

    Constructs a new string_column by copying the contents of the supplied array.

    Arguments

    Type IntentOptional Attributes Name
    type(string), intent(in), dimension(:) :: x

    The array to copy.

    Return Value type(string_column)

    The newly constructed string_column object.

public interface sum

  • private pure function rc_sum(x) result(rst)

    Overloads sum to add all column values, without copying the array.

    Arguments

    Type IntentOptional Attributes Name
    class(real_column), intent(in) :: x

    The input real_column; unallocated storage is treated as empty.

    Return Value real(kind=real64)

    The sum, or zero for an empty column. Uses intrinsic summation semantics.

public interface tan

  • private pure function rc_tan(x) result(rst)

    Overloads tan to compute the tangent of each column element. Singularities and nonfinite inputs follow intrinsic tan behavior.

    Arguments

    Type IntentOptional Attributes Name
    class(real_column), intent(in) :: x

    The input angles in radians; unallocated storage is treated as empty.

    Return Value type(real_column)

    An independent, unnamed column of tangent values with the same count as x.


Derived Types

type, public ::  data_column

Defines a column of data within a data_table object.

Components

Type Visibility Attributes Name Initial
character(len=:), public, allocatable :: m_name

A header, or column name.

Type-Bound Procedures

procedure(data_column_append), public, deferred, pass :: append ..\..\

Appends one value, initializing an unallocated column if needed. Discard existing views before this operation.<\p>

procedure(data_column_array_copy), public, deferred, pass :: copy ..\..\

Copies the contents of the column to an array.<\p>

procedure(data_column_integer_query), public, deferred, pass :: count ..\..\

Gets the number of items stored in the column.<\p>

procedure(data_column_integer_query), public, deferred, pass :: get_data_type

Gets the data type stored by the column:

Read more…
procedure, public :: get_name => dc_get_name
procedure(data_column_insert), public, deferred, pass :: insert ..\..\

Inserts one value before row, in the range 1 through count() + 1. Discard existing views before this operation.<\p>

procedure(data_column_remove), public, deferred, pass :: remove ..\..\

Removes one row, in the range 1 through count(). Discard existing views before this operation.<\p>

procedure, public :: set_name => dc_set_name
procedure(data_column_slice), public, deferred, pass :: slice ..\..\

Borrows a mutable array pointer to a slice of the column without copying the column. The actual column must have TARGET or be an associated pointer. The caller must not deallocate the returned pointer. Reallocation of the array or destruction of the column invalidates the view; discard it before either operation and reacquire afterward.<\p>

procedure(data_column_to_string), public, deferred, pass :: to_string ..\..\

Converts the requested value to a string.<\p>

procedure(data_column_array_view), public, deferred, pass :: view ..\..\

Borrows a mutable array pointer without copying the column. The actual column must have TARGET or be an associated pointer. The caller must not deallocate the returned pointer. Reallocation of the array or destruction of the column invalidates the view; discard it before either operation and reacquire afterward.<\p>

type, public, extends(data_column) ::  integer_column

Defines a column of integer values.

Components

Type Visibility Attributes Name Initial
character(len=:), public, allocatable :: m_name

A header, or column name.

Constructor

private pure function ic_init_empty (n)

Constructs an empty integer_column of the requested size.

private pure function ic_init_array (x)

Constructs a new integer_column by copying the contents of the supplied array.

Type-Bound Procedures

procedure, public :: append => ic_append
procedure, public :: copy => ic_copy
procedure, public :: count => ic_count
procedure, public :: get => ic_get
procedure, public :: get_data_type => ic_get_type
procedure, public :: get_name => dc_get_name
procedure, public :: insert => ic_insert
procedure, public :: remove => ic_remove
procedure, public :: set => ic_set
procedure, public :: set_name => dc_set_name
procedure, public :: slice => ic_slice
procedure, public :: to_string => ic_to_string
procedure, public :: view => ic_view

type, public, extends(data_column) ::  logical_column

Defines a column of logical values.

Components

Type Visibility Attributes Name Initial
character(len=:), public, allocatable :: m_name

A header, or column name.

Constructor

private pure function lc_init_empty (n)

Constructs an empty logical_column of the requested size.

private pure function lc_init_array (x)

Constructs a new logical_column by copying the contents of the supplied array.

Type-Bound Procedures

procedure, public :: append => lc_append
procedure, public :: copy => lc_copy
procedure, public :: count => lc_count
procedure, public :: get => lc_get
procedure, public :: get_data_type => lc_get_type
procedure, public :: get_name => dc_get_name
procedure, public :: insert => lc_insert
procedure, public :: remove => lc_remove
procedure, public :: set => lc_set
procedure, public :: set_name => dc_set_name
procedure, public :: slice => lc_slice
procedure, public :: to_string => lc_to_string
procedure, public :: view => lc_view

type, public, extends(data_column) ::  real_column

Defines a column of double-precision, floating-point values.

Components

Type Visibility Attributes Name Initial
character(len=:), public, allocatable :: m_name

A header, or column name.

Constructor

private pure function rc_init_empty (n)

Constructs an empty real_column of the requested size.

private pure function rc_init_array (x)

Constructs a new real_column by copying the contents of the supplied array.

Type-Bound Procedures

procedure, public :: append => rc_append
procedure, public :: copy => rc_copy
procedure, public :: count => rc_count
procedure, public :: get => rc_get
procedure, public :: get_data_type => rc_get_type
procedure, public :: get_name => dc_get_name
procedure, public :: insert => rc_insert
procedure, public :: remove => rc_remove
procedure, public :: set => rc_set
procedure, public :: set_name => dc_set_name
procedure, public :: slice => rc_slice
procedure, public :: to_string => rc_to_string
procedure, public :: view => rc_view

type, public, extends(data_column) ::  string_column

Defines a column of string values.

Components

Type Visibility Attributes Name Initial
character(len=:), public, allocatable :: m_name

A header, or column name.

Constructor

private pure function sc_init_empty (n)

Constructs an empty integer_column of the requested size.

private pure function sc_init_array (x)

Constructs a new string_column by copying the contents of the supplied array.

Type-Bound Procedures

procedure, public :: append => sc_append
procedure, public :: copy => sc_copy
procedure, public :: count => sc_count
procedure, public :: get => sc_get
procedure, public :: get_data_type => sc_get_type
procedure, public :: get_name => dc_get_name
procedure, public :: insert => sc_insert
procedure, public :: remove => sc_remove
procedure, public :: set => sc_set
procedure, public :: set_name => dc_set_name
procedure, public :: slice => sc_slice
procedure, public :: to_string => sc_to_string
procedure, public :: view => sc_view